#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx


from contrasenhas.vista import VistaContrasenha
from contrasenhas.controlador import Controlador
from cifrar.vista import VistaCifrar
from unidades_cifradas.vista import VistaUnidadesCifradas
    
class Main(wx.App):
    """Clase que inicia La ventana pricnipal de la aplicación"""
    
    def OnInit(self):
        """
        Método que instancia la clase que incia la ventan principal
        """
        self.ventana = VentanaPrincipal(950,600)
        """Propiedad que almacena el objeto de la ventana principal """
        
        self.SetTopWindow(self.ventana)
        
        return True


class TestNB(wx.Notebook):
    """
    Clase que crea las pestañas de la aplicación
    """
    def __init__(self, parent, id):
        
        """
        Constructor de las pestañas de la aplicación.
        
        :param parent: El objeto de la ventana principal que contendrá las diferentes pestañas
        :param id: Identificador único de la ventana
        """
        
        wx.Notebook.__init__(self, parent, id, style=
                             wx.BK_DEFAULT
                             #wx.BK_TOP 
                             #wx.BK_BOTTOM
                             #wx.BK_LEFT
                             #wx.BK_RIGHT
                             # | wx.NB_MULTILINE
                             )
        
        
        self.parent = parent
        """Propiedad que almacena la ventana madre donde deben ir las pestañas """
        
        self.pestanha1 = VistaContrasenha(self)
        """ Propiedad que almacena la vista de las contraseñas """
        self.AddPage(self.pestanha1, "Gestión de Contraseñas")
        """ Título que llevará la interfaz de las contraseñas """
        
        self.pestanha2 = VistaCifrar(self)
        """ Propiedad que almacena la vista de Cifrar """
        self.AddPage(self.pestanha2,"Cifrar/Firmar Documentos")
        
        self.pestanha3 = VistaUnidadesCifradas(self)
        """ Propiedad que almacena la vista de las unidades cifradas"""
        self.AddPage(self.pestanha3,"Cifrar Unidades")
        
         

class VentanaPrincipal(wx.Frame): #wx.Notebook
    """
    Clase que crear la ventana principal de la aplicación
    """
    def __init__(self,largo,ancho):
        
        self.controlador = Controlador(self)
        """ LLAMADA AL CONTROLADOR PARA PODER LUEGO EJECUTAR EL BORRADO DE LA PAPELERA """
        
        wx.Frame.__init__(self,None,-1,"TIBISAY")
                             #,style= wx.CAPTION
                             # |wx.MINIMIZE_BOX
                             # |wx.CLOSE_BOX)
        
        # CREAMOS EL MENU
        self.menu()
        # CREAMOS UN TOOLBAR QUE DEFININERMOS LUEGO EN CADA VISTA CORRESPONDIENTE
        self.tb = self.CreateToolBar()
        
        # CREAMOS EL NOTEBOK
        TestNB(self, -1)
        
        self.Show(True)
        # Le damos tamaño a la ventana
        self.Size = largo,ancho
        
    
    def menu(self):
        
        """
        Método que crea el menú de la ventana principal. Este menú es utilizado en todas las pestañas, no cambia
        """
        self.MiMenuBar = wx.MenuBar()
        self.itemsMenu = wx.Menu()
        # CREAMOS PRIMERO LOS ITEMS
        #subItem
        self.itemsMenu.Append(100, "&Seguridad Informática", "", wx.ITEM_NORMAL)
        # subItem
        item = wx.MenuItem(self.itemsMenu,110, "M&anual del Usuario\tCtrl+A", "")
        ###item.SetBitmap(images.getManualBitmap())
        self.itemsMenu.AppendItem(item)
        self.itemsMenu.AppendSeparator()
        # subItem
        item = wx.MenuItem(self.itemsMenu,120, "Bor&rado Seguro de Papelera\tCtrl+R", "")
        ###item.SetBitmap(images.getManualBitmap())
        self.itemsMenu.AppendItem(item)
        self.itemsMenu.AppendSeparator()
        # subItem
        item = wx.MenuItem(self.itemsMenu,130, "Sa&lir\tCtrl+L", "")
        ###item.SetBitmap(images.getExitBitmap())
        self.itemsMenu.AppendItem(item)
        
        # Añadir subItems a menu
        self.MiMenuBar.Append(self.itemsMenu,"&Tibisay")
        self.SetMenuBar(self.MiMenuBar)
        
        # EVENTO AL BOTÓN BORRADO SEGURO DE PAPELERA
        self.Bind(wx.EVT_MENU, self.controlador.borrarPapelera, id=120)
        # AÑADIMOS EL EVENTO AL BOTÓN Salir DEL MENÚ
        self.Bind(wx.EVT_MENU, self.cerrar_ventana, id=130)
    
    
    def cerrar_ventana(self,event):
        """
        Método que cierra la ventana principal
        """
        self.Close()
        
# VERIFICAMOS SI SOY MÓDULO PRINCIPAL
if __name__ == '__main__':
    
    app = Main()
    app.MainLoop()
    
    
    